package com.example.javamaday.leetcode;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class LeetCodeTest0387 {
    public static void main(String[] args) {

    }

    public int firstUniqChar(String s) {
        char[] chars = s.toCharArray();
        HashMap<Character, Integer> contentMap = new HashMap<>();
        // 对每个字母进行出现次数的计数，最小为1
        for (int i = 0; i < chars.length; i++) {
            if (contentMap.get(chars[i]) != null) {
                contentMap.put(chars[i], contentMap.get(chars[i]) + 1);
            } else {
                contentMap.put(chars[i], 1);
            }
        }
        // 一次循环，筛选 次数为1 的字母
        ArrayList<Character> characters = new ArrayList<>();
        for (Map.Entry<Character, Integer> entry : contentMap.entrySet()) {
            if (entry.getValue() == 1) {
                characters.add(entry.getKey());
            }
        }
        // 如果没有次数为1的字母
        if (characters.size() == 0) {
            return -1;
        } else {
            // 有，就检索每个字母的首次出现位置，找到第一个出现的
            for (int i = 0; i < chars.length; i++) {
                if (characters.contains(chars[i])) {
                    return i;
                }
            }
        }
        return -1;
    }

}
